home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
058.lha
/
Wheel of Fortune
/
Wheel3.4
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
AmigaBASIC Source Code
|
1986-11-20
|
23.1 KB
|
1,058 lines
'*---------^---------*`
'| Wheel Of Fortune |`
'< by >`
'| Hari Wiguna |` Last Mod:
'*---------v---------*` 12/20/1986
CLEAR,45000: DEFINT a-z: RANDOMIZE TIMER
Debug=0: GOSUB InitCode
IF Debug=0 THEN ON BREAK GOSUB CleanUp: BREAK ON
MainLoop:
WHILE Play
Start:
IF Debug THEN LOCATE 1,1: PRINT "Bas";FRE(0);" Sys";FRE(-1);" Stk";FRE(-2)
MENU ON
IF PuzCons=o THEN
IF PuzVow THEN
IF Score(pNow)>=250 THEN
c$="You Have to Buy a Vowel"
ELSE
CALL Spread(Who$(pNow),"You Have to SOLVE the Puzzle"): GOTO Solve
END IF
ELSE
GOSUB Solved: GOTO Start
END IF
ELSE
c$="You May SPIN"
IF Score(pNow)>=250 THEN c$=c$+", BUY a Vowel"
END IF
c$=c$+", or SOLVE the Puzzle."
CALL Spread(Who$(pNow),c$)
Start2:
MENU ON
GOSUB WaitBtn: MENU OFF
IF BtnHit>=o THEN ON BtnHit+l GOTO Spin,BuyV,Solve,VolDown,VolUp
IF Play THEN GOTO Start2 :ELSE GOTO EndLoop2
Spin:
IF PuzCons THEN GOSUB Spinner :ELSE Start
IF Spin=-1 THEN' { Bankrupt }
IF Talk THEN SAY TRANSLATE$("Oh No!")
GOSUB FailTune: Score(pNow)=o: p=pNow: GOSUB prScore: GOTO BadSpin
ELSEIF Spin=-2 THEN' { Loose Turn }
IF Talk THEN SAY TRANSLATE$("uh oh!")
GOSUB FailTune: GOTO BadSpin
ELSEIF Spin=-3 THEN' { Free Spin }
IF Talk THEN SAY TRANSLATE$("Free Spin!")
GOSUB FreeTune
Free(pNow)=Free(pNow)+l: p=pNow: GOSUB prScore: GOTO Start
ELSEIF Spin=-4 THEN' { Prize }
GOTO Start
ELSE ' { Consonant }
GOSUB PickCons: GOSUB CheckIt
IF Yes THEN GOTO Start
END IF
BadSpin:
GOSUB HasF: IF Yes THEN GOTO Start :ELSE GOTO NextP
BuyV:
IF Score(pNow)>=250 THEN
GOSUB PickVowel: GOSUB CheckIt
IF Yes THEN
Score(pNow)=Score(pNow)-250: GOTO EndLoop
ELSE
GOTO NextP
END IF
ELSE
GOSUB Bleep: GOTO Start
END IF
Solve:
IF PuzCons=o THEN
a$=" No More Consonants, You would have to solve the puzzle!"
ELSE
a$=" So you think you know what it is, eh?"
END IF
WINDOW 2,a$,(o,o)-(631,7),o
LINE INPUT a$
WINDOW CLOSE 2
GOSUB Strip'(a$)
IF a$=Puz$ THEN
GOSUB Solved: GOTO Start
ELSE
GOSUB FailTune: GOTO NextP
END IF
VolUp:
IF vol<=255-vs THEN vol=vol+vs :ELSE GOSUB Bleep
GOTO FeedBack:
VolDown:
IF vol>=vs THEN vol=vol-vs :ELSE GOSUB Bleep
FeedBack:
SOUND 700,1,vol,o: SOUND 700,1,vol,1
GOTO Start2
NextP:
p=pNow' Save Prev Player
NextP2:
IF pNow<=pMax THEN pNow=pNow+l :ELSE pNow=l
IF LEFT$(Who$(pNow),l)="-" THEN GOTO NextP2
GOSUB prScore'(p) { De-Hilite previous player }
EndLoop:
p=pNow: GOSUB prScore
EndLoop2:
WEND
GOTO CleanUp
FreeTune:
FOR i=17 TO 25
SOUND i*160,0.5,vol,o: SOUND i*160,0.5,vol,l
NEXT
RETURN
FailTune:
FOR ft=12 TO 1 STEP -1
SOUND ft*100,1,vol,2
SOUND ft*100,1,vol,3
NEXT
WHILE INKEY$<>"": WEND
RETURN
Spinner:
v=10+RND(l)*20: LINE (170,yM-v)-STEP(2,v),l,b
COLOR l,o
WHILE v>l
PUT (xw1,yw1),Wheel%(o,Frame),PSET
SOUND 900,0.3,vol,o
SOUND 800,0.2,vol,l
LOCATE 14,5: Spin=Luck(Round,INT(RND(l)*24))
IF Spin>o THEN
PRINT USING " ##### ";Spin;
ELSEIF Spin=-1 THEN
PRINT " Bankrupt ";
ELSEIF Spin=-2 THEN
PRINT " Loose a Turn";
ELSEIF Spin=-3 THEN
PRINT " Free Spin ";
ELSEIF Spin=-4 THEN
PRINT " Prize! ";
END IF
LINE (170,yM-v)-STEP(2,o),2: FOR t1=l TO ((yM-101-v)/20)^2: NEXT: v=v-l
IF Frame<3 THEN Frame=Frame+l :ELSE Frame=o
WEND
IF Spin<o THEN WHILE INKEY$<>"": WEND
RETURN
Solved:
COLOR 2,l: TurnSpd=9
FOR lin=1 TO 4
a$=Puzzle$(lin)
FOR Ch=l TO LEN(a$)
Ch$=MID$(a$,Ch,l)
IF (INSTR(Cons$,Ch$) OR INSTR(Vowel$,Ch$)) THEN
IF NOT Used(ASC(Ch$)-64) THEN GOSUB TurnLtr'(Lin,Ch)
END IF
NEXT
NEXT
Total&(pNow)=Total&(pNow)+Score(pNow)
GOSUB ClrScore
GOSUB FanFare
CurPuz=CurPuz+l: LSET fPuzzle$=STR$(MaxPuz)+","+STR$(CurPuz)
ON ERROR GOTO DiskLock1
PUT #l,l
SolvedEnd:
ON ERROR GOTO 0
GOSUB NewPuzzle
RETURN
DiskLock1:
WINDOW 2
RESUME SolvedEnd
WaitBtn:
WHILE MOUSE(o)=o AND Play
Kh$=INKEY$
IF Kh$<>"" THEN
b=(INSTR(KeyCmd$,UCASE$(Kh$))+l)\2
IF b=l THEN
GOSUB Help
ELSEIF b>l THEN
BtnHit=b-2: GOTO WaitBtnEnd
END IF
END IF
WEND
IF Play THEN
mx=MOUSE(l): my=MOUSE(2)
FOR b=o TO nBtn
x=BtnX(b)*8-9: y=BtnY(b)*8-10: w=(LEN(Btn$(b))+2)*8: x2=x+w: y2=y+11
IF FNPtInBox(mx,my, x,y, x2,y2) THEN
GOSUB TrackBtn
IF Now THEN BtnHit=b: GOTO WaitBtnEnd
END IF
NEXT
END IF
BtnHit=m1
WaitBtnEnd:
RETURN
TrackBtn:
x=BtnX(b)*8-9: y=BtnY(b)*8-10: w=(LEN(Btn$(b))+2)*8: x2=x+w: y2=y+11
GOSUB Tracker
RETURN
Tracker:
Now=o: Was=o
WHILE MOUSE(o)<o
Now=FNPtInBox(MOUSE(l),MOUSE(2), x,y, x2,y2)
IF Now<>Was THEN
CALL InvertBox(x,y,x2,y2)
Was=Now
END IF
WEND
IF Now THEN CALL InvertBox(x,y,x2,y2)
RETURN
SUB InvertBox(x,y,x2,y2) STATIC
AREA(x,y): AREA(x2,y): AREA(x2,y2): AREA(x,y2): AREAFILL 1
END SUB
Strip:
a$=UCASE$(a$): b$=""
FOR i=l TO LEN(a$)
Ch$=MID$(a$,i,l)
IF INSTR(Cons$,Ch$) OR INSTR(Vowel$,Ch$) THEN b$=b$+Ch$
NEXT
a$=b$
RETURN
UseFile:
WINDOW 2," Please enter the Puzzle File Name...",(o,o)-(631,16),o
PRINT "Current Puzzle File: ";PuzFile$
PRINT " New Puzzle File? ";
LINE INPUT a$
WINDOW CLOSE 2
IF a$<>"" THEN
CLOSE l
IF INSTR(a$,".")=o THEN a$=a$+".Puzzle"
b$=PuzFile$: PuzFile$=a$
ON ERROR GOTO CantUse
GOSUB OpenFile
GOTO SkipPuzzle
ELSE
RETURN
END IF
CantUse:
IF ERR=53 THEN
CALL BooBoo("I Can't find "+PuzFile$)
RESUME UseCurrent
ELSE
GOTO Oops
END IF
UseCurrent:
ON ERROR GOTO 0
PuzFile$=b$: GOSUB OpenFile
GOTO SkipPuzzle
ShowAnswer:
COLOR 2,l: TurnSpd=11
FOR lin=l TO 4
a$=Puzzle$(lin): ln=LEN(a$)
FOR Ch=l TO ln
Ch$=MID$(a$,Ch,l)
IF INSTR(Cons$,Ch$) OR INSTR(Vowel$,Ch$) THEN
IF NOT Used(ASC(Ch$)-64) THEN GOSUB TurnLtr'(Lin,Ch)
END IF
NEXT
NEXT
SkipPuzzle:
GOSUB ClrScore
CurPuz=CurPuz+l: LSET fPuzzle$=STR$(MaxPuz)+","+STR$(CurPuz)
ON ERROR GOTO DiskLock2
PUT #l,l
SkipPuzzleEnd:
ON ERROR GOTO 0
GOSUB NewPuzzle
RETURN
DiskLock2:
WINDOW 1
RESUME SkipPuzzleEnd
FanFare:
j=o
FOR k=10 TO 15
PALETTE 2,j,j,j: j=l-j
FOR Frame=o TO 3
PUT (xw1,yw1),Wheel%(o,Frame),PSET
SOUND (k+Frame)*100,l,vol,l
FOR t1=o TO 80: NEXT
NEXT
NEXT
FOR k=15 TO 10 STEP m1
PALETTE 2,j,j,j: j=l-j
FOR Frame=3 TO o STEP m1
PUT (xw1,yw1),Wheel%(o,Frame),PSET
SOUND (k+Frame)*100,l,vol,l
FOR t1=o TO 80: NEXT
NEXT
NEXT
PALETTE 2,o,o,o: Frame=o
RETURN
NewPuzzle:
FOR i=l TO 26: Used(i)=o: NEXT: noCons=o
FOR i=o TO 116 STEP 4
LINE (316-i,51-i/4)-(316+i,51+i/4),o,bf
NEXT
COLOR l,o: LOCATE 5,32: PRINT "Creating Puzzle..."
Cat$=STRING$(LEN(Cat$),32): GOSUB PrCat
IF CurPuz>MaxPuz OR CurPuz<2 THEN CurPuz=2
GET #l,CurPuz: PuzLeft$=fPuzzle$: i=INSTR(PuzLeft$,"|")
IF i=o THEN a$="Cant find '|' Line"+STR$(CurPuz)+" <"+PuzLeft$+">": GOTO Oops
a$=MID$(PuzLeft$, i+l)
WHILE RIGHT$(a$,l)=Sp$: a$=LEFT$(a$,LEN(a$)-l): WEND
IF LEFT$(a$,l)<>Sp$ THEN a$=Sp$+a$
Cat$=a$+Sp$
Puz$=UCASE$(LEFT$(PuzLeft$, i-l))
PuzLeft$="": PuzCons=o: PuzVow=o: a$=Puz$
FOR i=l TO LEN(a$)
Ch$=MID$(a$,i,l)
IF INSTR(Cons$,Ch$) THEN
PuzLeft$=PuzLeft$+Ch$: PuzCons=PuzCons+l
ELSE
IF INSTR(Vowel$,Ch$) THEN PuzVow=PuzVow+l
END IF
NEXT
GOSUB WordWrap'(a$,Puzzle$)
GOSUB Center
GOSUB PrPuzzle
a$=Puz$: GOSUB Strip: Puz$=a$
RETURN
HasF:
Yes=o
IF Free(pNow) THEN
WINDOW 2,"Use Free Spin?",(0,0)-(380,16),0
PRINT " You Have";Free(pNow);" Free Spins."
PRINT " Would you like to use one now? (Y/N) ";: a$=INPUT$(l)
WINDOW CLOSE 2
IF UCASE$(LEFT$(a$,l))<>"N" THEN
Free(pNow)=Free(pNow)-1
p=pNow: GOSUB prScore
Yes=-1
END IF
END IF
RETURN
PickCons:
CALL Spread("","Please Select a Consonant."): WantVowel=o: GOTO PickLtr
PickVowel:
CALL Spread("","You may Select a Vowel now."): WantVowel=-1: GOTO PickLtr
PickLtr:
MENU ON
WHILE MOUSE(o)=o AND Play
PickLtr2:
Kh$=INKEY$
IF Kh$=Hlp$ THEN
GOSUB Help
ELSEIF Kh$<>"" THEN
Kh$=UCASE$(Kh$)
IF INSTR(Vowel$,Kh$) OR INSTR(Cons$,Kh$) THEN
IF (NOT Hard) AND Used(ASC(Kh$)-64) THEN GOSUB Bleep: GOTO PickLtr2
IF WantVowel THEN x=INSTR(Vowel$,Kh$) :ELSE x=INSTR(Cons$,Kh$)
IF x THEN LtrHit=ASC(Kh$)-64: GOTO PickLtrEnd
ELSE
GOSUB Bleep
END IF
END IF
WEND
MENU OFF
IF Play THEN
b=MOUSE(o): mx=MOUSE(l): my=MOUSE(2): mx2=(mx-3)\24: w=11
FOR b=mx2+l TO 26
IF WantVowel THEN x=INSTR(Vowel$,CHR$(b+64)) :ELSE x=INSTR(Vowel$,CHR$(b+64))=0
IF (Hard OR NOT Used(b)) AND (x<>o) THEN
x=6+(b-l)*24: x2=x+w: y=12*8-10: y2=y+10
IF FNPtInBox(mx,my, x,y, x2,y2) THEN
GOSUB Tracker
IF Now THEN LtrHit=b: GOTO PickLtrEnd
END IF
END IF
NEXT
GOTO PickLtr
END IF
PickLtrEnd:
RETURN
CheckIt:
Yes=o: TurnSpd=o
IF NOT Used(LtrHit) THEN
Ch$=CHR$(64+LtrHit): COLOR 2,l
FOR lin=l TO 4
a$=Puzzle$(lin)
FOR Ch=l TO LEN(a$)
IF MID$(a$,Ch,l)=Ch$ THEN
Yes=-1
GOSUB TurnLtr'(Lin,Ch)
IF WantVowel THEN
PuzVow=PuzVow-l
ELSE
PuzCons=PuzCons-l
Score(pNow)=Score(pNow)+Spin
END IF
p=pNow: GOSUB prScore
END IF
NEXT
NEXT
Used(LtrHit)=-1
IF NOT Hard THEN LINE( ( (ASC(Ch$)-64) *3-2)*8,87 )-STEP(7,8),2,bf
END IF
IF Yes=o THEN FailTune
RETURN
TurnLtr:
x=((ASC(Ch$)-64)*3-2)*8-2: y=86
x2=(26+(pLeft(lin)+Ch-l)*2)*8-2: y2=(lin*2+l)*8-2
FOR i=5+TurnSpd TO 16
SOUND i*100,l,vol,o: SOUND i*100,l,vol,l
LINE (x2,y2)-STEP(11,10),l,bf
LINE (x2,y2)-STEP(11,10),2,bf
NEXT
FOR i=o TO 6
GET (x+i,y)-(x+i,y+10),TmpBit%
PUT (x2+i,y2),TmpBit%,PSET
GET (x+11-i,y)-(x+11-i,y+10),TmpBit%
PUT (x2+11-i,y2),TmpBit%,PSET
NEXT
RETURN
MenuDown:
Menue=MENU(o): Item=MENU(l)
IF Menue=l THEN
IF Item=l THEN
GOSUB EnterNames
ELSEIF Item=2 THEN
GOSUB ClrScore
ELSEIF Item=3 THEN
FOR p=l TO 4: Total&(p)=o: NEXT: GOSUB ClrScore
ELSEIF Item=5 THEN
Play=o
END IF
ELSEIF Menue=2 THEN
IF Item=l THEN
GOSUB EditFile
ELSEIF Item=2 THEN
GOSUB UseFile
ELSEIF Item=4 THEN
GOSUB SkipPuzzle
ELSEIF Item=5 THEN
GOSUB ShowAnswer
END IF
ELSEIF Menue=3 THEN
IF Item=l THEN
Talk= NOT Talk
MENU 3,l,l-Talk
IF Talk THEN SAY(TRANSLATE$("OK")) :ELSE SAY(TRANSLATE$("I will shut up."))
ELSEIF Item=2 THEN
Clue=NOT Clue
MENU 3,2,l-Clue
GOSUB PrCat
ELSEIF Item=3 THEN
Hard=NOT Hard
MENU 3,3,2+Hard
GOSUB dLetters
ELSEIF Item=5 THEN
GOSUB Help
ELSEIF Item=6 THEN
GOSUB Share
END IF
END IF
RETURN
MouseDown:
TIMER OFF: MENU OFF
Btn=MOUSE(o): MouseX=MOUSE(l): MouseY=MOUSE(2)
IF MouseY>101 THEN
IF MouseX<178 THEN
v=o
WHILE MOUSE(o)
IF yM-v>103 THEN v=v+l: LINE (170,yM-v)-STEP(2,0),l
FOR i=l TO 50: NEXT
WEND
IF v<30 THEN v=30: LINE (170,yM-v)-STEP(2,v),l,b
GOSUB Spin
END IF
END IF
RETURN
ClrScore:
FOR p=l TO 4: Score(p)=o: GOSUB prScore: NEXT
RETURN
EnterNames:
FOR p=l TO 6
LOCATE 15,52: COLOR l+(p MOD 2),2: PRINT ">>";
FOR zz=o TO 2000: NEXT
NEXT
FOR p=l TO 4
LOCATE 14+p,52: COLOR l,2: INPUT n$
IF n$<>"" THEN Who$(p)=n$
Who$(p)=LEFT$(Who$(p),25)
LOCATE 14+p,52: PRINT " ";Who$(p);STRING$(25-LEN(Who$(p)),32);
IF p=pNow THEN GOSUB prName
NEXT
RETURN
GetWord:
ln=INSTR(l,a$,Sp$)
IF ln THEN w$=LEFT$(a$,ln-l): a$=MID$(a$,ln+l): ln=ln-l
RETURN
Pad:
IF LEN(p$)<14 THEN 'can still add space
p$=p$+Sp$
ELSE
Puzzle$(nLin)=p$: nLin=nLin+l: p$=""
END IF
RETURN
UnPad:
IF RIGHT$(p$,l)=Sp$ THEN p$=LEFT$(p$,LEN(p$)-l)
Puzzle$(nLin)=p$
IF nLin<4 THEN
nLin=nLin+l
ELSE
a$="Puzzle too long! <"+Puz$+">"
GOTO Oops
END IF
RETURN
WordWrap:
FOR i=l TO 4: Puzzle$(i)="": NEXT
WHILE RIGHT$(a$,l)=Sp$: a$=LEFT$(a$,LEN(a$)-l): WEND
IF RIGHT$(a$,l)<>Sp$ THEN a$=a$+Sp$
nLin=l: p$=""
GOSUB GetWord 'a$-->w$,ln
WHILE ln
IF ln<=(14-LEN(p$)) THEN '<< Can still append
p$=p$+w$: GOSUB Pad
ELSE '<< New word won't fit
GOSUB UnPad
p$=w$: GOSUB Pad '<< Put on new line
END IF
GOSUB GetWord
WEND
GOSUB UnPad
IF Puzzle$(3)="" THEN
FOR i=3 TO l STEP m1: Puzzle$(i+l)=Puzzle$(i): NEXT
Puzzle$(l)=""
END IF
RETURN
Center:
FOR i=l TO 4
pLeft(i)=(14-LEN(Puzzle$(i)))/2
NEXT
RETURN
SavePrefs:
ON ERROR GOTO CantSave
OPEN "Wheel.Preferences" FOR OUTPUT AS 4
FOR i=l TO 4
PRINT #4,Who$(i)
PRINT #4,Total&(i)
NEXT
PRINT #4,vol,Hard, Clue, Talk
PRINT #4,PuzFile$
SavePrefsEnd:
CLOSE 4
LOCATE 11,33: COLOR 2,1: PRINT " See you later! ": COLOR 1,0
RETURN
CantSave:
RESUME SavePrefsEnd
dLetters:
LINE (o,84)-STEP(xm-2,15),l,b: COLOR 2,l
FOR i=l TO 26
LINE ((i*3-2)*8-2,86)-STEP(11,10),l,bf
LOCATE 12,i*3-l: PRINT CHR$(64+i);
IF (NOT Hard) AND Used(i) THEN LINE ((i*3-2)*8,87)-STEP(7,8),2,bf
NEXT
RETURN
PrCat:
Lft=40-LEN(Cat$)\2
LINE (Lft*8-8,7)-STEP(LEN(Cat$)*8,10),2,bf
LINE (Lft*8-9,6)-STEP(LEN(Cat$)*8+2,10),3,b
IF Clue THEN COLOR l,2: LOCATE 2,Lft: PRINT Cat$;
RETURN
PrPuzzle:
GOSUB PrCat
PATTERN &Hffff,Pat: COLOR 1,0: LINE (200,20)-(432,82),1,bf
PATTERN &Hffff,Solid
COLOR 2,l: k=l
FOR i=4 TO 11 STEP 2
a$=Puzzle$(k): a=pLeft(k): k=k+l: ln=LEN(a$)
FOR j=o TO 13
x=(26+(a+j)*2)*8-2: y=(i-l)*8-2: b$=MID$(a$,j+l,l)
IF j<ln AND b$<>Sp$ THEN
IF INSTR(Cons$,b$) OR INSTR(Vowel$,b$) THEN
LINE (x,y)-STEP(11,10),2,bf
LINE (x,y)-STEP(11,10),l,b
ELSE
LINE (x,y)-STEP(11,10),1,bf
LOCATE i,27+(a+j)*2: PRINT b$;
END IF
END IF
NEXT
NEXT
GOSUB dLetters
RETURN
prScore:
LOCATE 14+p,24: COLOR 1,2
PRINT USING "$$#,###,### $$###,### ## ";Total&(p),Score(p),Free(p);
GOSUB prName
RETURN
prName:
IF p=pNow THEN COLOR 3,1 :ELSE COLOR 1,2
LOCATE 14+p,54: PRINT Who$(p);
RETURN
Oops:
LOCATE 1,1: PRINT a$
PRINT "Error Code =";ERR
PRINT "Press <RETURN> to Continue";: a$=INPUT$(1)
CleanUp:
MOUSE OFF: TIMER OFF: MENU OFF: MENU RESET
IF Talk THEN SAY TRANSLATE$("Bye Bye")
WINDOW OUTPUT 1
WINDOW CLOSE 2
WINDOW 1," Wheel",(0,0)-(617,186),15
LOCATE 11,32: COLOR 2,1: PRINT " Saving Scores... "
CLOSE 1: CLOSE 5
GOSUB SavePrefs
END
ConvertFile:
Src$="Wheel.TXT": Count=0
PRINT "Your Original TEXT filename: [";Src$;"] ";
INPUT a$: IF a$<>"" THEN Src$=a$
ON ERROR GOTO CloseFil
OPEN Src$ FOR INPUT AS #2
IF INSTR(Src$,".") THEN Src$=LEFT$(Src$,INSTR(Src$,".")-1)
cLoop:
Dst$=Src$+".Puzzle"
PRINT "Destination PUZZLE filename: [";Dst$;"] ";
INPUT a$: IF a$<>"" THEN Dst$=a$
IF INSTR(a$,".")=o THEN a$=a$+".Puzzle"
IF UCASE$(a$)=UCASE$(PuzFile$) THEN
PRINT "Please name it something else. We are using '";a$;"' now."
GOTO cLoop
END IF
PRINT "Converting";
OPEN "R",3,Dst$,80
FIELD #3, 80 AS fPuzzle$
loop:
LINE INPUT #2,a$
IF LEN(a$)>79 THEN
CALL ConvertErr("Line too long: ("+a$+")")
ELSEIF INSTR(a$,"|")=0 THEN
CALL ConvertErr("Missing '|': ("+a$+")")
ELSE
Count=Count+1
LSET fPuzzle$=a$: PUT #3,Count+1
PRINT ".";: IF (Count MOD 70)=o THEN PRINT
END IF
GOTO loop
CloseFil:
WINDOW 2
IF ERR=62 THEN
LSET fPuzzle$=STR$(Count)+","+STR$(2): PUT #3,1
CLOSE 2
CLOSE 3
RESUME EndConvert
ELSEIF ERR=53 THEN
a$="File Not Found": RESUME Oops
ELSE
a$="Oops File error!"+STR$(ERR): RESUME Oops
END IF
EndConvert:
ON ERROR GOTO 0
PRINT
PRINT Count;"lines Converted."
PRINT " Press any key to Continue...";
WHILE MOUSE(o)=o AND INKEY$="": WEND
RETURN
SUB BooBoo(Txt$) STATIC
WINDOW 3,"Error...",(0,0)-(631,9),0
PRINT Txt$;
WHILE MOUSE(0)=0 AND INKEY$="": WEND
WINDOW OUTPUT 1
WINDOW CLOSE 3
END SUB
EditFile:
WINDOW 2," Convert Puzzle File",(o,o)-(631,100),o
PRINT " I have yet to find the time to do a puzzle editor, and I'm sure you all
PRINT " would like to enter your own puzzles, and swap puzzle files with
PRINT " your friends, so if you pardon this very long sentence, I present you
PRINT " a temporary solution:
PRINT " 1. Create a TEXT file using Ed / AEdit / Emacs, or any Text Editor.
PRINT " The format goes like this:
PRINT " Celibacy is not hereditary|Phrase
PRINT " One puzzle per line; the Puzzle, a vertical bar, and the clue.
PRINT " (TYPE Wheel.TXT for examples.)
PRINT " 2. Select Convert Puzzle File, and follow the instructions.
PRINT
INPUT "Do you have a TEXT File ready for conversion";a$
IF LEFT$(UCASE$(a$),l)="Y" THEN
GOSUB ConvertFile
END IF
WINDOW OUTPUT 1
WINDOW CLOSE 2
RETURN
Spread:
SUB Spread(Who$,a$) STATIC
SHARED Talk
M0=26: Mw=51: m=Mw\2: ln=LEN(a$): p=(Mw-ln)\2: y=22
a$=STRING$(p,32)+a$+STRING$(Mw-p-ln,32)
FOR i=0 TO m-1
LOCATE y,M0+m-i: PRINT MID$(a$,m-i,1);
LOCATE y,M0+m+i: PRINT MID$(a$,m+i,1);
NEXT
IF Talk AND (LOC(5)=0) THEN
i=INSTR(a$,"Consonant")
IF i THEN a$=LEFT$(a$,i-1)+"Konsenant"
SAY TRANSLATE$(Who$+","+a$)
END IF
END SUB
Help:
WINDOW 2," Hi There!",(o,o)-(631,16*8),o
PRINT " This game comes with the best instruction manual you'll ever find!
PRINT " It will take you about half an hour to study it, but I promise you
PRINT " it will be quite entertaining. Watch it on TV!
PRINT " You have a TV don't you? I'm sure you do, even the FlintStones had one.
PRINT
PRINT " Anyway, here's a list of short-cuts and features:
PRINT " - In addition to clicking on the screen you may also use the keyboard:
PRINT " S=Spin B=Buy Vowel +/-=volume ESC=Solve the Puzzle.
PRINT " any alphabetic key to select Consonants/Vowels.
PRINT " - Up to 4 players may play at once.
PRINT " Change the rest of the player's name to '-' if less than 4 players.
PRINT " - Punctuations are ignored when you SOLVE the puzzle.
PRINT " - Player names, Total scores, Volume, and other parameters are saved
PRINT " in a file named 'Wheel.Preferences' for the next time you play.
PRINT
PRINT TAB(22);: GOSUB Continue
RETURN
SUB ConvertErr(Txt$) STATIC
PRINT: PRINT Txt$
PRINT "Press any key to continue...";
WHILE MOUSE(0)=0 AND INKEY$="": WEND
END SUB
Share:
WINDOW 2," About ShareWare...",(10,40)-(621,40+11*8),o
PRINT " This program is distributed as ShareWare, you may copy it, give it away,
PRINT " or do anything else with it except sell it.
PRINT " If you enjoy this program , any contribution is appreciated.
PRINT " I would also like to hear your suggestions.
PRINT
PRINT " Please send your Checks, and Suggestions to:
PRINT " Hari Wiguna
PRINT " 1315 F Apt #6
PRINT " Lincoln, NE 68508"
PRINT TAB(50);"Thank You Very Much!"
GOSUB Continue
RETURN
Continue:
PRINT "Press any key to continue...";
WHILE MOUSE(o)=o AND INKEY$="": WEND
WINDOW OUTPUT 1
WINDOW CLOSE 2
RETURN
Bleep:
RETURN
SOUND 700,l,vol,2
SOUND 700,l,vol,3
RETURN
InitCode:
GOSUB InitVars
GOSUB InitFile
GOSUB InitMenus
GOSUB InitMouse
GOSUB InitBoard
RETURN
InitVars:
CLS: LOCATE 11,32: COLOR 2,1: PRINT " Excuse me... "
DEF FNPtInBox(x,y, x1,y1,x2,y2) = x>x1 AND x<x2 AND y>y1 AND y<y2
o=0: l=1: m1=-l: pi2!=710/113: Play=m1
Sp$=" ": Vowel$="AIUEO": Cons$="BCDFGHJKLMNPQRSTVWXYZ"
Hlp$=CHR$(139): KeyCmd$=Hlp$+"?S B"+CHR$(8)+ CHR$(27)+CHR$(13)+ "-_+="
DIM Pat(3): Pat(0)=&H9249: Pat(l)=&H4992: Pat(2)=&H9249: Pat(3)=&H4992
DIM Solid(3): FOR i=o TO 3: Solid(i)=&Hffff: NEXT
DIM TmpBit%( 3+INT((16+31)/16)*(l+11)*2 )
DIM Total&(4),Score(4),Who$(4),Free(4)
DIM Puzzle$(4),pLeft(4),Used(26)
i=4: DIM Btn$(i),BtnX(i),BtnY(i): nBtn=i
Values:
DIM Luck(3,23)
FOR Round=l TO 3
FOR i=o TO 23
READ Luck(Round,i)
NEXT
NEXT
Round=3
DATA 1000,500,400,300,2000,-3,700,200,150,450,-2,200,400,250,150,400,600,250,350,-1,750,800,300,200
DATA -1,900,300,250,900,200,400,550,1000,200,600,-1,200,550,400,900,250,-4,700,800,300,-2,2000,700
DATA -1,-1,-2,-3,150,900,300,250,900,200,400,550,1000,200,600,200,550,400,900,700,800,300,2000,700
Prefs:
pMax=3
Who$(1)="Nicole"
Who$(2)="Michel"
Who$(3)="-"
Who$(4)="-"
vol=255: vs=25
Hard=o: Clue=m1: Talk=o
PuzFile$="Wheel.Puzzle"
ON ERROR GOTO NoPref
OPEN "Wheel.Preferences" FOR INPUT AS 4
FOR i=l TO 4
LINE INPUT #4,Who$(i)
INPUT #4,Total&(i)
NEXT
INPUT #4,vol, Hard, Clue, Talk
LINE INPUT #4,PuzFile$
PrefEnd:
CLOSE 4
ON ERROR GOTO 0
RETURN
NoPref:
RESUME PrefEnd
InitFile:
OPEN "KYBD:" FOR INPUT AS 5
ON ERROR GOTO CantOpen
OpenFile:
OPEN PuzFile$ FOR INPUT AS 1: CLOSE 1
OPEN "R",l,PuzFile$,80
FIELD #l, 80 AS fPuzzle$
GET #l,l: i=INSTR(fPuzzle$,",")
MaxPuz=VAL(LEFT$(fPuzzle$,i-l))
CurPuz=VAL(MID$ (fPuzzle$,i+l))
ON ERROR GOTO 0
RETURN
CantOpen:
IF ERR=53 THEN
a$="I can't find "+PuzFile$
ELSE
a$="Can't Open (Bad Puzzle File?) Throwing away 'Wheel.Preferences' might help."
END IF
RESUME Oops
InitMenus:
MENU l,o,l," Players "
MENU l,l,l,"Enter Names "
MENU l,2,l,"Clear Scores"
MENU l,3,l,"Clear Totals"
MENU l,4,o,"------------"
MENU l,5,l,"QUIT "
MENU 2,o,l," Puzzle "
MENU 2,l,l,"CONVERT File... "
MENU 2,2,l,"Use Another File "
MENU 2,3,o,"-----------------"
MENU 2,4,l,"Skip This Puzzle "
MENU 2,5,l,"Show Answer "
MENU 3,o,l," Options "
MENU 3,l,l-Talk," Speech "
MENU 3,2,l-Clue," Clue "
MENU 3,3,2+Hard," Hide Used Letters "
MENU 3,4,o, "--------------------"
MENU 3,5,l, " Help... "
MENU 3,6,l, " About ShareWare..."
FOR i=4 TO 9
MENU i,o,o,""
NEXT
ON MENU GOSUB MenuDown
RETURN
InitMouse:
ON MOUSE GOSUB MouseDown
RETURN
InitBoard:
WINDOW 1," WHEEL OF FORTUNE ",(0,1)-(631,186),14+16
xm=WINDOW(2): yM=WINDOW(3): cM=WINDOW(6)
COLOR 1,2: CLS
dPuzzle:
x=243: y=50: r=110: r2=r-30: r3=r-20: x3=xm-x: i=0
IF Debug THEN St!=pi2! :ELSE St!=0.03
FOR s!=0 TO pi2! STEP St!
x2=COS(s!)*r: y2=SIN(s!)*r/2.25
LINE (x,y)-STEP(x2,y2),i
LINE (x3,y)-STEP(x2,y2),i
IF i<3 THEN i=i+1 :ELSE i=0
NEXT s!
LINE (o,84)-STEP(619,20),2,bf
GOSUB NewPuzzle
dButtons:
i=0: Btn$(i)=" Spin ": BtnX(i)=3: BtnY(i)=5:GOSUB DrawBtn
i=1: Btn$(i)="Buy a Vowel": BtnX(i)=3: BtnY(i)=7:GOSUB DrawBtn
i=2: Btn$(i)="Solve Puzzle": BtnX(i)=65: BtnY(i)=5:GOSUB DrawBtn
i=3: Btn$(i)=" - ": BtnX(i)=65: BtnY(i)=7:GOSUB DrawBtn
i=4: Btn$(i)=" + ": BtnX(i)=74: BtnY(i)=7:GOSUB DrawBtn
'Speaker
LINE (555,49)-(561,54),3,b
LINE (561,49)-(569,46),3: LINE -STEP(0,11),3: LINE -(561,54),3
'Noise
LINE (572,51)-STEP(6,0),3
LINE (572,48)-STEP(8,-4),3
LINE (572,55)-STEP(8,4),3
dNotice:
LINE (183,148)-(xm-3,yM-1),l,b
LOCATE 20,25: COLOR l,2: PRINT "Whipped up by ";
COLOR 3,2: PRINT "Hari Wiguna.";: COLOR l,2
LOCATE 21,25: PRINT " If you enjoy this ShareWare program,
LOCATE 22,25: PRINT " and if you're a really nice person,
LOCATE 23,25: PRINT " you'd probably send me a few bucks. ";
COLOR 3,2: PRINT "Thanks!";
dScore:
LINE (183,101)-(xm-3,146),1,b
LOCATE 14,30: COLOR 3,2
PRINT "TOTAL SCORE FREE PLAYER'S NAME"
pNow=1
FOR p=1 TO 4
GOSUB prScore
NEXT
dWheel:
LINE (o,100)-(178,yM),2,bf
LINE (2,101)-(178,yM-l),l,b
LOCATE 14,5: COLOR 3,2: PRINT "Making Wheel..."
xw1=18: yw1=117: xw2=161: yw2=181
i=3+INT((16+xw2-xw1)/16)*(l+yw2-yw1)*2
DIM Wheel%(i,3)
IF Debug THEN s!=2*pi2! :ELSE s!=pi2!/20
xc=90: yc=149: r!=70: s3!=s!/2: ss!=s3!/5
FOR i=o TO 3
LINE (xw1,yw1)-(xw2,yw2),2,bf
c=l
FOR a!=s3!*i TO pi2!+s3!*i STEP s!
FOR b!=a! TO a!+s! STEP ss!
x=COS(b!)*r!: y=SIN(b!)*r!/2.25
LINE (xc,yc)-STEP(x,y),c
NEXT
c=4-c
NEXT
SOUND 1700,4,vol,o: SOUND 1700,4,vol,l
GET (xw1,yw1)-(xw2,yw2),Wheel%(0,i)
NEXT
LINE (20,103)-STEP(134,9),l,bf
LOCATE 14,5: COLOR l,o: PRINT " I'm Ready! "
eNotice:
IF Talk THEN
SAY TRANSLATE$("Let's play a game!")
ELSE
FOR i=100 TO 2000 STEP 100
SOUND i,0.5,vol,o: SOUND i,0.5,vol,l
NEXT
END IF
FOR i=160 TO 168
FOR j=i TO yM-2 STEP 8
LINE (184,j)-(xm-4,j),2
NEXT j
FOR j=o TO 450: NEXT
NEXT i
RETURN
DrawBtn:
LINE (BtnX(i)*8-9,BtnY(i)*8-10)-STEP((LEN(Btn$(i))+2)*8,11),0,bf
LINE (BtnX(i)*8-9,BtnY(i)*8-10)-STEP((LEN(Btn$(i))+2)*8,11),1,b
LOCATE BtnY(i),BtnX(i)+1: COLOR 1,0: PRINT Btn$(i);
RETURN
MouseSpot:
WHILE MOUSE(o)=o
LOCATE 2,1
PRINT USING "### ### ###";MOUSE(1),MOUSE(2);
WEND
RETURN
EndInitCode: